<?php
include_once($_SERVER['DOCUMENT_ROOT']."ExiaStore/Model/BDD.php");
include($_SERVER['DOCUMENT_ROOT']."ExiaStore/Model/verificationBDD.php");
include_once($_SERVER['DOCUMENT_ROOT']."ExiaStore/Model/Security/securite.php");

class adresse {//création d'une nouvelle classe
    private $adresse;
    private $ville;
    private $codepostal;
    private $pays;
    private $bdd;
    private $securite;
    
    public function __construct(){//Initialise les valeurs de toutes les variables
        $this->securite = new securite();
        $this->bdd = new BDD();
        $this->adresse =  $this->securite->antixss($_POST['adresse']);
        $this->ville = $this->securite->antixss($_POST['ville']);
        $this->codepostal = $this->securite->antixss($_POST['codepostal']);
        $this->pays = $this->securite->antixss($_POST['pays']); 
    }
    
    public function addToBDD(){ //Ajouter les valeurs de l'adresse dans la BDD 
        $this->addCodePostal();
        $this->addVille();
        $this->addAdresse();
        $this->addLocaliser();  
    }
 
    private function addCodePostal(){ //Ajoute le code postal à la BDD s'il n'existe pas
        $req = "INSERT INTO codepostal (codePostal) VALUES (:codepostal)";
        if(!verifCodePostal($this->bdd, $this->codepostal)){ //Verifie s'il existe
            $rslt = $this->bdd->getBDD()->prepare($req);
            $rslt->execute(array(":codepostal" => $this->codepostal)); 
        }
    }
    
    private function addVille(){//Ajoute la ville à la BDD si elle n'existe pas
        $req = "INSERT INTO ville (ville, codepostal) VALUES (:ville, :codepostal)";
        if(!verifVille($this->bdd, $this->ville)){ //Verifie si elle existe
            $rslt = $this->bdd->getBDD()->prepare($req);
            $rslt->execute(array(":ville" => $this->ville, ":codepostal" => $this->codepostal)); 
        }
    }
    
    public function getIDAdresse(){ //Récupère l'id de la dernière adresse enregistrée
        $rslt = $this->bdd->getBDD()->prepare("SELECT idadresse FROM adresse ORDER BY idadresse DESC LIMIT 1");
        $rslt->execute();
        $tab = $rslt->fetch(PDO::FETCH_ASSOC);
        return $tab['idadresse'];       
    }
    
    private function addAdresse(){ //Ajoute l'adresse à la BDD
        $req = "INSERT INTO adresse (pays, adresse) VALUES (:pays, :adresse)";
        $rslt = $this->bdd->getBDD()->prepare($req);
        $rslt->execute(array(":pays" => $this->pays, ":adresse" => $this->adresse)); 
    }
    
    private function addLocaliser(){ //Ajoute l'id de l'adresse et la ville à la table LOCALISER de la BDD
        $req = "INSERT INTO localiser (idadresse, ville) VALUES (:idadresse, :ville)";
        $rslt = $this->bdd->getBDD()->prepare($req);
        $rslt->execute(array(":idadresse" => $this->getIDAdresse(), ":ville" => $this->ville));
    }
}
?>
